package demo;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Game {
    private static final String[] suits = {"♥","♠","♣","♦"};
    public List<Poker> buyPoker(){//生成52张扑克牌
        List<Poker> pokers = new ArrayList<>();//生成的牌要放在数组当中
        for (int i = 0; i < 4; i++) {//表示4中花色
            for (int j = 1; j <= 13; j++) {//每种花色都有13张牌，每种花色都从1开始。
                String suit = suits[i];//每次循环的花色
                int rank = j;//循环生成的牌的点数
                Poker poker = new Poker(suit,rank);//生成一张牌
                //牌这个对象放在pokers这个对象的数组中。
                pokers.add(poker);
            }
        }
        return pokers;
    }
    //洗牌
    public void shuffle(List<Poker> pokers){//这个方法只是将牌打乱。
        for (int i = pokers.size()-1; i > 0 ; i--) {
            Random random = new Random();//利用random生成随机数
            int index = random.nextInt(i);
            swap(pokers,i,index);
        }
    }
    private void swap(List<Poker> pokers,int i,int j){//数组元素交换方法
        Poker tmp = pokers.get(i);
        pokers.set(i,pokers.get(j));
        pokers.set(j,tmp);
    }
    //揭牌
    public List<List<Poker>> game(List<Poker> pokers){
        List<List<Poker>> hand = new ArrayList<>();//这里利用二维数组，让下边的三个手产生联系。
        List<Poker> hand1 = new ArrayList<>();
        List<Poker> hand2 = new ArrayList<>();
        List<Poker> hand3 = new ArrayList<>();
        hand.add(hand1);
        hand.add(hand2);
        hand.add(hand3);
        for (int i = 0; i < 5; i++) {//最外层控制揭牌的轮数
            for (int j = 0; j < 3; j++) {//控制揭牌的人数
                Poker removePoker = pokers.remove(0);//揭完之后，每次删除0下标位置元素。
                hand.get(j).add(removePoker);//每个人揭的牌，就是数组中删除的元素。
            }
        }
        return hand;
    }
}
